package ms.unicorn.language.serializer;

import com.google.inject.Inject;
import com.google.inject.Provider;
import ms.unicorn.language.languagedef.Anchor;
import ms.unicorn.language.languagedef.ColorDef;
import ms.unicorn.language.languagedef.CompartmentViewDef;
import ms.unicorn.language.languagedef.ConnectionDecorator;
import ms.unicorn.language.languagedef.ConnectionStyleDef;
import ms.unicorn.language.languagedef.DecoratorDef;
import ms.unicorn.language.languagedef.DecoratorLocatorDef;
import ms.unicorn.language.languagedef.EntityDef;
import ms.unicorn.language.languagedef.FigureDef;
import ms.unicorn.language.languagedef.ImportStatement;
import ms.unicorn.language.languagedef.LabelSourceField;
import ms.unicorn.language.languagedef.LabelViewDef;
import ms.unicorn.language.languagedef.LanguageDef;
import ms.unicorn.language.languagedef.LanguagedefPackage;
import ms.unicorn.language.languagedef.Library;
import ms.unicorn.language.languagedef.Namespace;
import ms.unicorn.language.languagedef.NodeViewDef;
import ms.unicorn.language.languagedef.Parameter;
import ms.unicorn.language.languagedef.ParentLanguages;
import ms.unicorn.language.languagedef.Policies;
import ms.unicorn.language.languagedef.PolicyDef;
import ms.unicorn.language.languagedef.RelationConstraint;
import ms.unicorn.language.languagedef.RelationDef;
import ms.unicorn.language.languagedef.RelationViewDef;
import ms.unicorn.language.languagedef.SubFigure;
import ms.unicorn.language.languagedef.SubViewDef;
import ms.unicorn.language.languagedef.TagDef;
import ms.unicorn.language.languagedef.TagEntryDef;
import ms.unicorn.language.languagedef.ToolBox;
import ms.unicorn.language.languagedef.ToolGroup;
import ms.unicorn.language.languagedef.ToolItem;
import ms.unicorn.language.languagedef.ToolView;
import ms.unicorn.language.languagedef.ValidatorDef;
import ms.unicorn.language.languagedef.XRectangle;
import ms.unicorn.language.languagedef.XReferenceExpression;
import ms.unicorn.language.services.UnicornLanguageDefinitionGrammarAccess;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.common.types.JvmFormalParameter;
import org.eclipse.xtext.common.types.JvmLowerBound;
import org.eclipse.xtext.common.types.JvmParameterizedTypeReference;
import org.eclipse.xtext.common.types.JvmTypeParameter;
import org.eclipse.xtext.common.types.JvmUpperBound;
import org.eclipse.xtext.common.types.JvmWildcardTypeReference;
import org.eclipse.xtext.common.types.TypesPackage;
import org.eclipse.xtext.serializer.acceptor.ISemanticSequenceAcceptor;
import org.eclipse.xtext.serializer.acceptor.SequenceFeeder;
import org.eclipse.xtext.serializer.diagnostic.ISemanticSequencerDiagnosticProvider;
import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
import org.eclipse.xtext.serializer.sequencer.AbstractSemanticSequencer;
import org.eclipse.xtext.serializer.sequencer.GenericSequencer;
import org.eclipse.xtext.serializer.sequencer.ISemanticNodeProvider.INodesForEObjectProvider;
import org.eclipse.xtext.serializer.sequencer.ISemanticSequencer;
import org.eclipse.xtext.serializer.sequencer.ITransientValueService;
import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
import org.eclipse.xtext.xbase.XAssignment;
import org.eclipse.xtext.xbase.XBinaryOperation;
import org.eclipse.xtext.xbase.XBlockExpression;
import org.eclipse.xtext.xbase.XBooleanLiteral;
import org.eclipse.xtext.xbase.XCasePart;
import org.eclipse.xtext.xbase.XCastedExpression;
import org.eclipse.xtext.xbase.XCatchClause;
import org.eclipse.xtext.xbase.XClosure;
import org.eclipse.xtext.xbase.XConstructorCall;
import org.eclipse.xtext.xbase.XDoWhileExpression;
import org.eclipse.xtext.xbase.XFeatureCall;
import org.eclipse.xtext.xbase.XForLoopExpression;
import org.eclipse.xtext.xbase.XIfExpression;
import org.eclipse.xtext.xbase.XInstanceOfExpression;
import org.eclipse.xtext.xbase.XIntLiteral;
import org.eclipse.xtext.xbase.XMemberFeatureCall;
import org.eclipse.xtext.xbase.XNullLiteral;
import org.eclipse.xtext.xbase.XReturnExpression;
import org.eclipse.xtext.xbase.XStringLiteral;
import org.eclipse.xtext.xbase.XSwitchExpression;
import org.eclipse.xtext.xbase.XThrowExpression;
import org.eclipse.xtext.xbase.XTryCatchFinallyExpression;
import org.eclipse.xtext.xbase.XTypeLiteral;
import org.eclipse.xtext.xbase.XUnaryOperation;
import org.eclipse.xtext.xbase.XVariableDeclaration;
import org.eclipse.xtext.xbase.XWhileExpression;
import org.eclipse.xtext.xbase.XbasePackage;
import org.eclipse.xtext.xbase.serializer.XbaseSemanticSequencer;
import org.eclipse.xtext.xtype.XFunctionTypeRef;
import org.eclipse.xtext.xtype.XtypePackage;

@SuppressWarnings("restriction")
public class AbstractUnicornLanguageDefinitionSemanticSequencer extends AbstractSemanticSequencer {

	@Inject
	protected UnicornLanguageDefinitionGrammarAccess grammarAccess;
	
	@Inject
	protected ISemanticSequencerDiagnosticProvider diagnosticProvider;
	
	@Inject
	protected ITransientValueService transientValues;
	
	@Inject
	@GenericSequencer
	protected Provider<ISemanticSequencer> genericSequencerProvider;
	
	protected ISemanticSequencer genericSequencer;
	
	@Inject
	protected Provider<XbaseSemanticSequencer> superSequencerProvider;
	 
	protected XbaseSemanticSequencer superSequencer; 
	
	@Override
	public void init(ISemanticSequencer sequencer, ISemanticSequenceAcceptor sequenceAcceptor, Acceptor errorAcceptor) {
		super.init(sequencer, sequenceAcceptor, errorAcceptor);
		this.genericSequencer = genericSequencerProvider.get();
		this.genericSequencer.init(sequencer, sequenceAcceptor, errorAcceptor);
		this.superSequencer = superSequencerProvider.get();
		this.superSequencer.init(sequencer, sequenceAcceptor, errorAcceptor); 
	}
	
	public void createSequence(EObject context, EObject semanticObject) {
		if(semanticObject.eClass().getEPackage() == LanguagedefPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
			case LanguagedefPackage.ANCHOR:
				if(context == grammarAccess.getAnchorRule()) {
					sequence_Anchor_Anchor(context, (Anchor) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.COLOR_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getExpressionableModuleItemRule() ||
				   context == grammarAccess.getColorDefRule()) {
					sequence_ColorDef_ColorDef(context, (ColorDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.COMPARTMENT_VIEW_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getViewDefRule() ||
				   context == grammarAccess.getCompartmentViewDefRule()) {
					sequence_CompartmentViewDef_CompartmentViewDef(context, (CompartmentViewDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.CONNECTION_DECORATOR:
				if(context == grammarAccess.getConnectionDecoratorRule()) {
					sequence_ConnectionDecorator_ConnectionDecorator(context, (ConnectionDecorator) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.CONNECTION_STYLE_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getConnectionStyleDefRule()) {
					sequence_ConnectionStyleDef_ConnectionStyleDef(context, (ConnectionStyleDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.DECORATOR_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getDecoratorDefRule()) {
					sequence_DecoratorDef_DecoratorDef(context, (DecoratorDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.DECORATOR_LOCATOR_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getDecoratorLocatorDefRule()) {
					sequence_DecoratorLocatorDef_DecoratorLocatorDef(context, (DecoratorLocatorDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.ENTITY_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getElementDefRule() ||
				   context == grammarAccess.getEntityDefRule()) {
					sequence_EntityDef_EntityDef(context, (EntityDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.FIGURE_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getFigureDefRule()) {
					sequence_FigureDef_FigureDef(context, (FigureDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.IMPORT_STATEMENT:
				if(context == grammarAccess.getImportStatementRule()) {
					sequence_ImportStatement_ImportStatement(context, (ImportStatement) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.LABEL_SOURCE_FIELD:
				if(context == grammarAccess.getLabelSourceFieldRule()) {
					sequence_LabelSourceField_LabelSourceField(context, (LabelSourceField) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.LABEL_VIEW_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getViewDefRule() ||
				   context == grammarAccess.getLabelViewDefRule()) {
					sequence_LabelViewDef_LabelViewDef(context, (LabelViewDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.LANGUAGE_DEF:
				if(context == grammarAccess.getModuleRule() ||
				   context == grammarAccess.getLanguageDefRule()) {
					sequence_LanguageDef_LanguageDef(context, (LanguageDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.LIBRARY:
				if(context == grammarAccess.getModuleRule() ||
				   context == grammarAccess.getLibraryRule()) {
					sequence_Library_Library(context, (Library) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.NAMESPACE:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getNamespaceRule()) {
					sequence_Namespace_Namespace(context, (Namespace) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.NODE_VIEW_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getViewDefRule() ||
				   context == grammarAccess.getNodeViewDefRule()) {
					sequence_NodeViewDef_NodeViewDef(context, (NodeViewDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.PARAMETER:
				if(context == grammarAccess.getToolViewParameterRule()) {
					sequence_ToolViewParameter_Parameter(context, (Parameter) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getLayoutParameterRule()) {
					sequence_LayoutParameter_Parameter(context, (Parameter) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getElementFigureParameterRule()) {
					sequence_ElementFigureParameter_Parameter(context, (Parameter) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getDecoratorParameterRule()) {
					sequence_DecoratorParameter_Parameter(context, (Parameter) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getTagEntryDefParameterRule()) {
					sequence_TagEntryDefParameter_Parameter(context, (Parameter) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.PARENT_LANGUAGES:
				if(context == grammarAccess.getParentLanguagesRule()) {
					sequence_ParentLanguages_ParentLanguages(context, (ParentLanguages) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.POLICIES:
				if(context == grammarAccess.getPoliciesRule()) {
					sequence_Policies_Policies(context, (Policies) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.POLICY_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getPolicyDefRule()) {
					sequence_PolicyDef_PolicyDef(context, (PolicyDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.RELATION_CONSTRAINT:
				if(context == grammarAccess.getRelationConstraintRule()) {
					sequence_RelationConstraint_RelationConstraint(context, (RelationConstraint) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.RELATION_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getElementDefRule() ||
				   context == grammarAccess.getRelationDefRule()) {
					sequence_RelationDef_RelationDef(context, (RelationDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.RELATION_VIEW_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getViewDefRule() ||
				   context == grammarAccess.getRelationViewDefRule()) {
					sequence_RelationViewDef_RelationViewDef(context, (RelationViewDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.SUB_FIGURE:
				if(context == grammarAccess.getSubFigureRule()) {
					sequence_SubFigure_SubFigure(context, (SubFigure) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.SUB_VIEW_DEF:
				if(context == grammarAccess.getSubViewDefRule()) {
					sequence_SubViewDef_SubViewDef(context, (SubViewDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.TAG_DEF:
				if(context == grammarAccess.getPredefinedTagDefRule()) {
					sequence_PredefinedTagDef_TagDef(context, (TagDef) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getCustomTagDefRule()) {
					sequence_CustomTagDef_TagDef(context, (TagDef) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getTagDefRule()) {
					sequence_TagDef_TagDef(context, (TagDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.TAG_ENTRY_DEF:
				if(context == grammarAccess.getTagEntryDefRule()) {
					sequence_TagEntryDef_TagEntryDef(context, (TagEntryDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.TOOL_BOX:
				if(context == grammarAccess.getToolBoxRule()) {
					sequence_ToolBox_ToolBox(context, (ToolBox) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.TOOL_GROUP:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getToolGroupRule()) {
					sequence_ToolGroup_ToolGroup(context, (ToolGroup) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.TOOL_ITEM:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getToolItemRule()) {
					sequence_ToolItem_ToolItem(context, (ToolItem) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.TOOL_VIEW:
				if(context == grammarAccess.getToolViewRule()) {
					sequence_ToolView_ToolView(context, (ToolView) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.VALIDATOR_DEF:
				if(context == grammarAccess.getModuleItemRule() ||
				   context == grammarAccess.getNonExpressionModuleItemRule() ||
				   context == grammarAccess.getValidatorDefRule()) {
					sequence_ValidatorDef_ValidatorDef(context, (ValidatorDef) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.XRECTANGLE:
				if(context == grammarAccess.getXRectangleRule()) {
					sequence_XRectangle_XRectangle(context, (XRectangle) semanticObject); 
					return; 
				}
				else break;
			case LanguagedefPackage.XREFERENCE_EXPRESSION:
				if(context == grammarAccess.getXReferenceExpressionRule()) {
					sequence_XReferenceExpression_XReferenceExpression(context, (XReferenceExpression) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getXGroupExpressionRule()) {
					sequence_XGroupExpression_XReferenceExpression(context, (XReferenceExpression) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getXFigureExpressionRule()) {
					sequence_XFigureExpression_XReferenceExpression(context, (XReferenceExpression) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getXColorExpressionRule()) {
					sequence_XColorExpression_XReferenceExpression(context, (XReferenceExpression) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getXValidatorExpressionRule()) {
					sequence_XValidatorExpression_XReferenceExpression(context, (XReferenceExpression) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getXViewExpressionRule()) {
					sequence_XViewExpression_XReferenceExpression(context, (XReferenceExpression) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getXToolItemExpressionRule()) {
					sequence_XToolItemExpression_XReferenceExpression(context, (XReferenceExpression) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getXLocatorExpressionRule()) {
					sequence_XLocatorExpression_XReferenceExpression(context, (XReferenceExpression) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getXConnectionStyleExpressionRule()) {
					sequence_XConnectionStyleExpression_XReferenceExpression(context, (XReferenceExpression) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getXDecoratorExpressionRule()) {
					sequence_XDecoratorExpression_XReferenceExpression(context, (XReferenceExpression) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getXPolicyExpressionRule()) {
					sequence_XPolicyExpression_XReferenceExpression(context, (XReferenceExpression) semanticObject); 
					return; 
				}
				else break;
			}
		else if(semanticObject.eClass().getEPackage() == TypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
			case TypesPackage.JVM_FORMAL_PARAMETER:
				if(context == grammarAccess.getJvmFormalParameterRule()) {
					sequence_JvmFormalParameter_JvmFormalParameter(context, (JvmFormalParameter) semanticObject); 
					return; 
				}
				else break;
			case TypesPackage.JVM_LOWER_BOUND:
				if(context == grammarAccess.getJvmLowerBoundRule()) {
					sequence_JvmLowerBound_JvmLowerBound(context, (JvmLowerBound) semanticObject); 
					return; 
				}
				else break;
			case TypesPackage.JVM_PARAMETERIZED_TYPE_REFERENCE:
				if(context == grammarAccess.getJvmTypeReferenceRule() ||
				   context == grammarAccess.getJvmParameterizedTypeReferenceRule() ||
				   context == grammarAccess.getJvmArgumentTypeReferenceRule()) {
					sequence_JvmParameterizedTypeReference_JvmParameterizedTypeReference(context, (JvmParameterizedTypeReference) semanticObject); 
					return; 
				}
				else break;
			case TypesPackage.JVM_TYPE_PARAMETER:
				if(context == grammarAccess.getJvmTypeParameterRule()) {
					sequence_JvmTypeParameter_JvmTypeParameter(context, (JvmTypeParameter) semanticObject); 
					return; 
				}
				else break;
			case TypesPackage.JVM_UPPER_BOUND:
				if(context == grammarAccess.getJvmUpperBoundAndedRule()) {
					sequence_JvmUpperBoundAnded_JvmUpperBound(context, (JvmUpperBound) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getJvmUpperBoundRule()) {
					sequence_JvmUpperBound_JvmUpperBound(context, (JvmUpperBound) semanticObject); 
					return; 
				}
				else break;
			case TypesPackage.JVM_WILDCARD_TYPE_REFERENCE:
				if(context == grammarAccess.getJvmArgumentTypeReferenceRule() ||
				   context == grammarAccess.getJvmWildcardTypeReferenceRule()) {
					sequence_JvmWildcardTypeReference_JvmWildcardTypeReference(context, (JvmWildcardTypeReference) semanticObject); 
					return; 
				}
				else break;
			}
		else if(semanticObject.eClass().getEPackage() == XbasePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
			case XbasePackage.XASSIGNMENT:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XAssignment_XAssignment(context, (XAssignment) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XBINARY_OPERATION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XAdditiveExpression_XBinaryOperation(context, (XBinaryOperation) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XBLOCK_EXPRESSION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXBlockExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XBlockExpression_XBlockExpression(context, (XBlockExpression) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XBOOLEAN_LITERAL:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXLiteralRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule() ||
				   context == grammarAccess.getXBooleanLiteralRule()) {
					sequence_XBooleanLiteral_XBooleanLiteral(context, (XBooleanLiteral) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XCASE_PART:
				if(context == grammarAccess.getXCasePartRule()) {
					sequence_XCasePart_XCasePart(context, (XCasePart) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XCASTED_EXPRESSION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XCastedExpression_XCastedExpression(context, (XCastedExpression) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XCATCH_CLAUSE:
				if(context == grammarAccess.getXCatchClauseRule()) {
					sequence_XCatchClause_XCatchClause(context, (XCatchClause) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XCLOSURE:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXLiteralRule() ||
				   context == grammarAccess.getXClosureRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XClosure_XClosure(context, (XClosure) semanticObject); 
					return; 
				}
				else if(context == grammarAccess.getXShortClosureRule()) {
					sequence_XShortClosure_XClosure(context, (XClosure) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XCONSTRUCTOR_CALL:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule() ||
				   context == grammarAccess.getXConstructorCallRule()) {
					sequence_XConstructorCall_XConstructorCall(context, (XConstructorCall) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XDO_WHILE_EXPRESSION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXDoWhileExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XDoWhileExpression_XDoWhileExpression(context, (XDoWhileExpression) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XFEATURE_CALL:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule() ||
				   context == grammarAccess.getXFeatureCallRule()) {
					sequence_XFeatureCall_XFeatureCall(context, (XFeatureCall) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XFOR_LOOP_EXPRESSION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXForLoopExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XForLoopExpression_XForLoopExpression(context, (XForLoopExpression) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XIF_EXPRESSION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXIfExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XIfExpression_XIfExpression(context, (XIfExpression) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XINSTANCE_OF_EXPRESSION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XRelationalExpression_XInstanceOfExpression(context, (XInstanceOfExpression) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XINT_LITERAL:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXLiteralRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule() ||
				   context == grammarAccess.getXIntLiteralRule()) {
					sequence_XIntLiteral_XIntLiteral(context, (XIntLiteral) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XMEMBER_FEATURE_CALL:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XMemberFeatureCall_XMemberFeatureCall(context, (XMemberFeatureCall) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XNULL_LITERAL:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXLiteralRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule() ||
				   context == grammarAccess.getXNullLiteralRule()) {
					sequence_XExpression_XNullLiteral(context, (XNullLiteral) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XRETURN_EXPRESSION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule() ||
				   context == grammarAccess.getXReturnExpressionRule()) {
					sequence_XReturnExpression_XReturnExpression(context, (XReturnExpression) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XSTRING_LITERAL:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXLiteralRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule() ||
				   context == grammarAccess.getXStringLiteralRule()) {
					sequence_XStringLiteral_XStringLiteral(context, (XStringLiteral) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XSWITCH_EXPRESSION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXSwitchExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XSwitchExpression_XSwitchExpression(context, (XSwitchExpression) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XTHROW_EXPRESSION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule() ||
				   context == grammarAccess.getXThrowExpressionRule()) {
					sequence_XThrowExpression_XThrowExpression(context, (XThrowExpression) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XTRY_CATCH_FINALLY_EXPRESSION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule() ||
				   context == grammarAccess.getXTryCatchFinallyExpressionRule()) {
					sequence_XTryCatchFinallyExpression_XTryCatchFinallyExpression(context, (XTryCatchFinallyExpression) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XTYPE_LITERAL:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXLiteralRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule() ||
				   context == grammarAccess.getXTypeLiteralRule()) {
					sequence_XTypeLiteral_XTypeLiteral(context, (XTypeLiteral) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XUNARY_OPERATION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XUnaryOperation_XUnaryOperation(context, (XUnaryOperation) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XVARIABLE_DECLARATION:
				if(context == grammarAccess.getXExpressionInsideBlockRule() ||
				   context == grammarAccess.getXVariableDeclarationRule()) {
					sequence_XVariableDeclaration_XVariableDeclaration(context, (XVariableDeclaration) semanticObject); 
					return; 
				}
				else break;
			case XbasePackage.XWHILE_EXPRESSION:
				if(context == grammarAccess.getXExpressionRule() ||
				   context == grammarAccess.getXAssignmentRule() ||
				   context == grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOrExpressionRule() ||
				   context == grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAndExpressionRule() ||
				   context == grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXEqualityExpressionRule() ||
				   context == grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionRule() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0() ||
				   context == grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0() ||
				   context == grammarAccess.getXOtherOperatorExpressionRule() ||
				   context == grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXAdditiveExpressionRule() ||
				   context == grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXMultiplicativeExpressionRule() ||
				   context == grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0() ||
				   context == grammarAccess.getXUnaryOperationRule() ||
				   context == grammarAccess.getXCastedExpressionRule() ||
				   context == grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallRule() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0() ||
				   context == grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0() ||
				   context == grammarAccess.getXPrimaryExpressionRule() ||
				   context == grammarAccess.getXParenthesizedExpressionRule() ||
				   context == grammarAccess.getXWhileExpressionRule() ||
				   context == grammarAccess.getXExpressionInsideBlockRule()) {
					sequence_XWhileExpression_XWhileExpression(context, (XWhileExpression) semanticObject); 
					return; 
				}
				else break;
			}
		else if(semanticObject.eClass().getEPackage() == XtypePackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
			case XtypePackage.XFUNCTION_TYPE_REF:
				if(context == grammarAccess.getJvmTypeReferenceRule() ||
				   context == grammarAccess.getXFunctionTypeRefRule() ||
				   context == grammarAccess.getJvmArgumentTypeReferenceRule()) {
					sequence_XFunctionTypeRef_XFunctionTypeRef(context, (XFunctionTypeRef) semanticObject); 
					return; 
				}
				else break;
			}
		if (errorAcceptor != null) errorAcceptor.accept(diagnosticProvider.createInvalidContextOrTypeDiagnostic(semanticObject, context));
	}
	
	/**
	 * Constraint:
	 *     ((anchorTop?='top' anchorLeft?='left' anchorRight?='right' anchorBottom?='bottom')?)
	 *
	 * Features:
	 *    anchorTop[0, 1]
	 *         EXCLUDE_IF_UNSET anchorLeft
	 *         MANDATORY_IF_SET anchorLeft
	 *         EXCLUDE_IF_UNSET anchorRight
	 *         MANDATORY_IF_SET anchorRight
	 *         EXCLUDE_IF_UNSET anchorBottom
	 *         MANDATORY_IF_SET anchorBottom
	 *    anchorLeft[0, 1]
	 *         EXCLUDE_IF_UNSET anchorTop
	 *         MANDATORY_IF_SET anchorTop
	 *         EXCLUDE_IF_UNSET anchorRight
	 *         MANDATORY_IF_SET anchorRight
	 *         EXCLUDE_IF_UNSET anchorBottom
	 *         MANDATORY_IF_SET anchorBottom
	 *    anchorRight[0, 1]
	 *         EXCLUDE_IF_UNSET anchorTop
	 *         MANDATORY_IF_SET anchorTop
	 *         EXCLUDE_IF_UNSET anchorLeft
	 *         MANDATORY_IF_SET anchorLeft
	 *         EXCLUDE_IF_UNSET anchorBottom
	 *         MANDATORY_IF_SET anchorBottom
	 *    anchorBottom[0, 1]
	 *         EXCLUDE_IF_UNSET anchorTop
	 *         MANDATORY_IF_SET anchorTop
	 *         EXCLUDE_IF_UNSET anchorLeft
	 *         MANDATORY_IF_SET anchorLeft
	 *         EXCLUDE_IF_UNSET anchorRight
	 *         MANDATORY_IF_SET anchorRight
	 */
	protected void sequence_Anchor_Anchor(EObject context, Anchor semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (name=ID? red=INT green=INT blue=INT alpha=INT?)
	 *
	 * Features:
	 *    name[0, 1]
	 *    red[1, 1]
	 *    green[1, 1]
	 *    blue[1, 1]
	 *    alpha[0, 1]
	 */
	protected void sequence_ColorDef_ColorDef(EObject context, ColorDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (viewType='compartment' (name=ID? (editpart=QualifiedName | editpart=STRING)?)?)
	 *
	 * Features:
	 *    name[0, 1]
	 *    viewType[1, 1]
	 *    editpart[0, 2]
	 */
	protected void sequence_CompartmentViewDef_CompartmentViewDef(EObject context, CompartmentViewDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((paramaters+=DecoratorParameter paramaters+=DecoratorParameter*)? decorator=XDecoratorExpression)
	 *
	 * Features:
	 *    paramaters[0, *]
	 *    decorator[1, 1]
	 */
	protected void sequence_ConnectionDecorator_ConnectionDecorator(EObject context, ConnectionDecorator semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         name=QualifiedName? 
	 *         (widthSet?='width' width=INT)? 
	 *         (lineStyleSet?='style' style=LineStyle)? 
	 *         (colorSet?='color' color=XColorExpression)? 
	 *         decorators+=ConnectionDecorator*
	 *     )
	 *
	 * Features:
	 *    name[0, 1]
	 *    widthSet[0, 1]
	 *         EXCLUDE_IF_UNSET width
	 *         MANDATORY_IF_SET width
	 *    width[0, 1]
	 *         EXCLUDE_IF_UNSET widthSet
	 *         MANDATORY_IF_SET widthSet
	 *    lineStyleSet[0, 1]
	 *         EXCLUDE_IF_UNSET style
	 *         MANDATORY_IF_SET style
	 *    style[0, 1]
	 *         EXCLUDE_IF_UNSET lineStyleSet
	 *         MANDATORY_IF_SET lineStyleSet
	 *    colorSet[0, 1]
	 *         EXCLUDE_IF_UNSET color
	 *         MANDATORY_IF_SET color
	 *    color[0, 1]
	 *         EXCLUDE_IF_UNSET colorSet
	 *         MANDATORY_IF_SET colorSet
	 *    decorators[0, *]
	 */
	protected void sequence_ConnectionStyleDef_ConnectionStyleDef(EObject context, ConnectionStyleDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((name=ID | name=STRING) entry+=TagEntryDef*)
	 *
	 * Features:
	 *    name[0, 2]
	 *    entry[0, *]
	 */
	protected void sequence_CustomTagDef_TagDef(EObject context, TagDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((name=QualifiedName | name=STRING)? (clazz=QualifiedName | clazz=STRING | superElement=[DecoratorDef|QualifiedName]) tags+=TagDef*)
	 *
	 * Features:
	 *    name[0, 2]
	 *    clazz[0, 2]
	 *         EXCLUDE_IF_SET superElement
	 *    superElement[0, 1]
	 *         EXCLUDE_IF_SET clazz
	 *         EXCLUDE_IF_SET clazz
	 *    tags[0, *]
	 */
	protected void sequence_DecoratorDef_DecoratorDef(EObject context, DecoratorDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((name=QualifiedName | name=STRING)? (clazz=QualifiedName | clazz=STRING | superElement=[DecoratorLocatorDef|QualifiedName]) tags+=TagDef*)
	 *
	 * Features:
	 *    name[0, 2]
	 *    clazz[0, 2]
	 *         EXCLUDE_IF_SET superElement
	 *    superElement[0, 1]
	 *         EXCLUDE_IF_SET clazz
	 *         EXCLUDE_IF_SET clazz
	 *    tags[0, *]
	 */
	protected void sequence_DecoratorLocatorDef_DecoratorLocatorDef(EObject context, DecoratorLocatorDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((paramId=LocationNameID locationValue=DecoratorLocation) | (paramId=LocatorParameterNameID item=XLocatorExpression))
	 *
	 * Features:
	 *    paramId[2, 2]
	 *    locationValue[1, 1]
	 *         EXCLUDE_IF_UNSET paramId
	 *         MANDATORY_IF_SET paramId
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET item
	 *    item[1, 1]
	 *         EXCLUDE_IF_UNSET paramId
	 *         MANDATORY_IF_SET paramId
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET locationValue
	 */
	protected void sequence_DecoratorParameter_Parameter(EObject context, Parameter semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((paramId=ElementFigureExpNameID value=XExpression) | (paramId=BoundParameterNameID boundValue=XRectangle))
	 *
	 * Features:
	 *    paramId[2, 2]
	 *    value[1, 1]
	 *         EXCLUDE_IF_UNSET paramId
	 *         MANDATORY_IF_SET paramId
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET boundValue
	 *    boundValue[1, 1]
	 *         EXCLUDE_IF_UNSET paramId
	 *         MANDATORY_IF_SET paramId
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET value
	 */
	protected void sequence_ElementFigureParameter_Parameter(EObject context, Parameter semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         name=ID 
	 *         (inherited?='extends' superElement=[EntityDef|QualifiedName])? 
	 *         text=STRING 
	 *         smallImage=STRING? 
	 *         largeImage=STRING? 
	 *         ((figureParams+=ElementFigureParameter figureParams+=ElementFigureParameter*)? figure=XFigureExpression)? 
	 *         view=XViewExpression? 
	 *         (helper=QualifiedName | helper=STRING)? 
	 *         policies=Policies? 
	 *         tags+=TagDef*
	 *     )
	 *
	 * Features:
	 *    name[1, 1]
	 *    inherited[0, 1]
	 *         EXCLUDE_IF_UNSET superElement
	 *         MANDATORY_IF_SET superElement
	 *    text[1, 1]
	 *    smallImage[0, 1]
	 *    largeImage[0, 1]
	 *    figureParams[0, *]
	 *         EXCLUDE_IF_UNSET figure
	 *    figure[0, 1]
	 *         MANDATORY_IF_SET figureParams
	 *         MANDATORY_IF_SET figureParams
	 *    view[0, 1]
	 *    helper[0, 2]
	 *    policies[0, 1]
	 *    tags[0, *]
	 *    superElement[0, 1]
	 *         EXCLUDE_IF_UNSET inherited
	 *         MANDATORY_IF_SET inherited
	 */
	protected void sequence_EntityDef_EntityDef(EObject context, EntityDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         name=ID? 
	 *         (clazz=QualifiedName | clazz=STRING | (inherited?='extends' superElement=[FigureDef|QualifiedName]))? 
	 *         (children+=SubFigure* tags+=TagDef*)?
	 *     )
	 *
	 * Features:
	 *    name[0, 1]
	 *    clazz[0, 2]
	 *         EXCLUDE_IF_SET inherited
	 *         EXCLUDE_IF_SET superElement
	 *    inherited[1, 1]
	 *         EXCLUDE_IF_UNSET superElement
	 *         MANDATORY_IF_SET superElement
	 *         EXCLUDE_IF_SET clazz
	 *         EXCLUDE_IF_SET clazz
	 *    superElement[1, 1]
	 *         EXCLUDE_IF_UNSET inherited
	 *         MANDATORY_IF_SET inherited
	 *         EXCLUDE_IF_SET clazz
	 *         EXCLUDE_IF_SET clazz
	 *    children[0, *]
	 *    tags[0, *]
	 */
	protected void sequence_FigureDef_FigureDef(EObject context, FigureDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     importedNamespace=QualifiedNameWildCard
	 *
	 * Features:
	 *    importedNamespace[1, 1]
	 */
	protected void sequence_ImportStatement_ImportStatement(EObject context, ImportStatement semanticObject) {
		if(errorAcceptor != null) {
			if(transientValues.isValueTransient(semanticObject, LanguagedefPackage.Literals.IMPORT_STATEMENT__IMPORTED_NAMESPACE) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, LanguagedefPackage.Literals.IMPORT_STATEMENT__IMPORTED_NAMESPACE));
		}
		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
		feeder.accept(grammarAccess.getImportStatementAccess().getImportedNamespaceQualifiedNameWildCardParserRuleCall_1_0(), semanticObject.getImportedNamespace());
		feeder.finish();
	}
	
	
	/**
	 * Constraint:
	 *     (parameterType=JvmTypeReference? name=ValidID)
	 *
	 * Features:
	 *    name[1, 1]
	 *    parameterType[0, 1]
	 */
	protected void sequence_JvmFormalParameter_JvmFormalParameter(EObject context, JvmFormalParameter semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     typeReference=JvmTypeReference
	 *
	 * Features:
	 *    typeReference[1, 1]
	 */
	protected void sequence_JvmLowerBound_JvmLowerBound(EObject context, JvmLowerBound semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (type=[JvmType|QualifiedName] (arguments+=JvmArgumentTypeReference arguments+=JvmArgumentTypeReference*)?)
	 *
	 * Features:
	 *    arguments[0, *]
	 *    type[1, 1]
	 */
	protected void sequence_JvmParameterizedTypeReference_JvmParameterizedTypeReference(EObject context, JvmParameterizedTypeReference semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (name=ValidID ((constraints+=JvmUpperBound constraints+=JvmUpperBoundAnded*) | constraints+=JvmLowerBound)?)
	 *
	 * Features:
	 *    constraints[1, *]
	 *    name[1, 1]
	 */
	protected void sequence_JvmTypeParameter_JvmTypeParameter(EObject context, JvmTypeParameter semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     typeReference=JvmTypeReference
	 *
	 * Features:
	 *    typeReference[1, 1]
	 */
	protected void sequence_JvmUpperBoundAnded_JvmUpperBound(EObject context, JvmUpperBound semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     typeReference=JvmTypeReference
	 *
	 * Features:
	 *    typeReference[1, 1]
	 */
	protected void sequence_JvmUpperBound_JvmUpperBound(EObject context, JvmUpperBound semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((constraints+=JvmUpperBound | constraints+=JvmLowerBound)?)
	 *
	 * Features:
	 *    constraints[0, 2]
	 */
	protected void sequence_JvmWildcardTypeReference_JvmWildcardTypeReference(EObject context, JvmWildcardTypeReference semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((builtIn?='@' name=ID) | field=[TagEntryDef|QualifiedName])
	 *
	 * Features:
	 *    builtIn[1, 1]
	 *         EXCLUDE_IF_UNSET name
	 *         MANDATORY_IF_SET name
	 *         EXCLUDE_IF_SET field
	 *    name[1, 1]
	 *         EXCLUDE_IF_UNSET builtIn
	 *         MANDATORY_IF_SET builtIn
	 *         EXCLUDE_IF_SET field
	 *    field[0, 1]
	 *         EXCLUDE_IF_SET builtIn
	 *         EXCLUDE_IF_SET name
	 */
	protected void sequence_LabelSourceField_LabelSourceField(EObject context, LabelSourceField semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         viewType='label' 
	 *         (
	 *             name=ID? 
	 *             (editpart=QualifiedName | editpart=STRING)? 
	 *             (viewFields+=LabelSourceField viewFields+=LabelSourceField*)? 
	 *             viewPattern=STRING? 
	 *             (editFields+=LabelSourceField editFields+=LabelSourceField*)? 
	 *             editPattern=STRING?
	 *         )?
	 *     )
	 *
	 * Features:
	 *    name[0, 1]
	 *    viewType[1, 1]
	 *    editpart[0, 2]
	 *    viewFields[0, *]
	 *    viewPattern[0, 1]
	 *    editFields[0, *]
	 *    editPattern[0, 1]
	 */
	protected void sequence_LabelViewDef_LabelViewDef(EObject context, LabelViewDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         (name=QualifiedName | name=STRING) 
	 *         text=STRING? 
	 *         ((modelExtension=QualifiedName | modelExtension=STRING)? (diagramExtension=QualifiedName | diagramExtension=STRING)?)? 
	 *         smallimage=STRING? 
	 *         largeimage=STRING? 
	 *         parents+=ParentLanguages* 
	 *         imports+=ImportStatement* 
	 *         (items+=ModuleItem | vars+=XVariableDeclaration)* 
	 *         toolbox=ToolBox?
	 *     )
	 *
	 * Features:
	 *    name[0, 2]
	 *    parents[0, *]
	 *    imports[0, *]
	 *    items[0, *]
	 *    vars[0, *]
	 *    text[0, 1]
	 *    modelExtension[0, 2]
	 *    diagramExtension[0, 2]
	 *    smallimage[0, 1]
	 *    largeimage[0, 1]
	 *    toolbox[0, 1]
	 */
	protected void sequence_LanguageDef_LanguageDef(EObject context, LanguageDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         (paramId=LayoutExpParameterNameID value=XExpression) | 
	 *         (paramId=DockParameterNameID dockValue=DockType) | 
	 *         (paramId=BoundParameterNameID boundValue=XRectangle) | 
	 *         (paramId=AnchorNameID anchorValue=Anchor)
	 *     )
	 *
	 * Features:
	 *    paramId[4, 4]
	 *    value[1, 1]
	 *         EXCLUDE_IF_UNSET paramId
	 *         MANDATORY_IF_SET paramId
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET dockValue
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET boundValue
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET anchorValue
	 *    dockValue[1, 1]
	 *         EXCLUDE_IF_UNSET paramId
	 *         MANDATORY_IF_SET paramId
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET value
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET boundValue
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET anchorValue
	 *    boundValue[1, 1]
	 *         EXCLUDE_IF_UNSET paramId
	 *         MANDATORY_IF_SET paramId
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET value
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET dockValue
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET anchorValue
	 *    anchorValue[1, 1]
	 *         EXCLUDE_IF_UNSET paramId
	 *         MANDATORY_IF_SET paramId
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET value
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET dockValue
	 *         EXCLUDE_IF_SET paramId
	 *         EXCLUDE_IF_SET boundValue
	 */
	protected void sequence_LayoutParameter_Parameter(EObject context, Parameter semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (name=QualifiedName parents+=ParentLanguages* imports+=ImportStatement* (items+=ModuleItem | vars+=XVariableDeclaration)*)
	 *
	 * Features:
	 *    name[1, 1]
	 *    parents[0, *]
	 *    imports[0, *]
	 *    items[0, *]
	 *    vars[0, *]
	 */
	protected void sequence_Library_Library(EObject context, Library semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (name=QualifiedName (items+=ModuleItem | vars+=XVariableDeclaration)*)
	 *
	 * Features:
	 *    name[1, 1]
	 *    items[0, *]
	 *    vars[0, *]
	 */
	protected void sequence_Namespace_Namespace(EObject context, Namespace semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (viewType='node' (name=ID? (editpart=QualifiedName | editpart=STRING)? children+=SubViewDef*)?)
	 *
	 * Features:
	 *    name[0, 1]
	 *    viewType[1, 1]
	 *    editpart[0, 2]
	 *    children[0, *]
	 */
	protected void sequence_NodeViewDef_NodeViewDef(EObject context, NodeViewDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     importURI=STRING
	 *
	 * Features:
	 *    importURI[1, 1]
	 */
	protected void sequence_ParentLanguages_ParentLanguages(EObject context, ParentLanguages semanticObject) {
		if(errorAcceptor != null) {
			if(transientValues.isValueTransient(semanticObject, LanguagedefPackage.Literals.PARENT_LANGUAGES__IMPORT_URI) == ValueTransient.YES)
				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, LanguagedefPackage.Literals.PARENT_LANGUAGES__IMPORT_URI));
		}
		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
		feeder.accept(grammarAccess.getParentLanguagesAccess().getImportURISTRINGTerminalRuleCall_1_0(), semanticObject.getImportURI());
		feeder.finish();
	}
	
	
	/**
	 * Constraint:
	 *     (policyExp+=XPolicyExpression*)
	 *
	 * Features:
	 *    policyExp[0, *]
	 */
	protected void sequence_Policies_Policies(EObject context, Policies semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         layoutPolicy?='layout'? 
	 *         name=QualifiedName? 
	 *         policy=ID? 
	 *         (clazz=QualifiedName | clazz=STRING | superElement=[PolicyDef|QualifiedName]) 
	 *         tags+=TagDef*
	 *     )
	 *
	 * Features:
	 *    name[0, 1]
	 *    layoutPolicy[0, 1]
	 *    policy[0, 1]
	 *    clazz[0, 2]
	 *         EXCLUDE_IF_SET superElement
	 *    superElement[0, 1]
	 *         EXCLUDE_IF_SET clazz
	 *         EXCLUDE_IF_SET clazz
	 *    tags[0, *]
	 */
	protected void sequence_PolicyDef_PolicyDef(EObject context, PolicyDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((name='fields' | name='properties') entry+=TagEntryDef*)
	 *
	 * Features:
	 *    name[0, 2]
	 *    entry[0, *]
	 */
	protected void sequence_PredefinedTagDef_TagDef(EObject context, TagDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         forbidden?='forbidden'? 
	 *         sources+=[ElementDef|QualifiedName] 
	 *         sources+=[ElementDef|QualifiedName]* 
	 *         targets+=[ElementDef|QualifiedName] 
	 *         targets+=[ElementDef|QualifiedName]* 
	 *         (style=XConnectionStyleExpression? validators+=XValidatorExpression*)?
	 *     )
	 *
	 * Features:
	 *    forbidden[0, 1]
	 *    sources[1, *]
	 *    targets[1, *]
	 *    style[0, 1]
	 *    validators[0, *]
	 */
	protected void sequence_RelationConstraint_RelationConstraint(EObject context, RelationConstraint semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         name=ID 
	 *         (inherited?='extends' superElement=[RelationDef|QualifiedName])? 
	 *         text=STRING 
	 *         smallImage=STRING? 
	 *         largeImage=STRING? 
	 *         ((figureParams+=ElementFigureParameter figureParams+=ElementFigureParameter*)? figure=XFigureExpression)? 
	 *         view=XViewExpression? 
	 *         (helper=QualifiedName | helper=STRING)? 
	 *         policies=Policies? 
	 *         tags+=TagDef*
	 *     )
	 *
	 * Features:
	 *    name[1, 1]
	 *    inherited[0, 1]
	 *         EXCLUDE_IF_UNSET superElement
	 *         MANDATORY_IF_SET superElement
	 *    text[1, 1]
	 *    smallImage[0, 1]
	 *    largeImage[0, 1]
	 *    figureParams[0, *]
	 *         EXCLUDE_IF_UNSET figure
	 *    figure[0, 1]
	 *         MANDATORY_IF_SET figureParams
	 *         MANDATORY_IF_SET figureParams
	 *    view[0, 1]
	 *    helper[0, 2]
	 *    policies[0, 1]
	 *    tags[0, *]
	 *    superElement[0, 1]
	 *         EXCLUDE_IF_UNSET inherited
	 *         MANDATORY_IF_SET inherited
	 */
	protected void sequence_RelationDef_RelationDef(EObject context, RelationDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         viewType='connector' 
	 *         (name=ID? (editpart=QualifiedName | editpart=STRING)? style=XConnectionStyleExpression? children+=SubViewDef* constraints+=RelationConstraint*)?
	 *     )
	 *
	 * Features:
	 *    name[0, 1]
	 *    viewType[1, 1]
	 *    editpart[0, 2]
	 *    style[0, 1]
	 *    children[0, *]
	 *    constraints[0, *]
	 */
	protected void sequence_RelationViewDef_RelationViewDef(EObject context, RelationViewDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((name=QualifiedName | name=STRING) (layout+=LayoutParameter layout+=LayoutParameter*)? figure=XFigureExpression)
	 *
	 * Features:
	 *    name[0, 2]
	 *    layout[0, *]
	 *    figure[1, 1]
	 */
	protected void sequence_SubFigure_SubFigure(EObject context, SubFigure semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((name=QualifiedName | name=STRING) view=XViewExpression)
	 *
	 * Features:
	 *    name[0, 2]
	 *    view[1, 1]
	 */
	protected void sequence_SubViewDef_SubViewDef(EObject context, SubViewDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (((name='fields' | name='properties') entry+=TagEntryDef*) | ((name=ID | name=STRING) entry+=TagEntryDef*))
	 *
	 * Features:
	 *    name[0, 4]
	 *    entry[0, *]
	 */
	protected void sequence_TagDef_TagDef(EObject context, TagDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (paramId=TagEntryDefExpParameterID value=XExpression)
	 *
	 * Features:
	 *    paramId[1, 1]
	 *    value[1, 1]
	 */
	protected void sequence_TagEntryDefParameter_Parameter(EObject context, Parameter semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         (name=QualifiedName | name=STRING) 
	 *         (parameters+=TagEntryDefParameter parameters+=TagEntryDefParameter*)? 
	 *         (typedEntry?=':' (type='int' | type='string' | type='boolean' | type='date' | type='float'))? 
	 *         (value=XExpression | ref=XReferenceExpression)?
	 *     )
	 *
	 * Features:
	 *    name[0, 2]
	 *    parameters[0, *]
	 *    typedEntry[0, 1]
	 *         MANDATORY_IF_SET type
	 *         MANDATORY_IF_SET type
	 *         MANDATORY_IF_SET type
	 *         MANDATORY_IF_SET type
	 *         MANDATORY_IF_SET type
	 *    type[0, 5]
	 *         EXCLUDE_IF_UNSET typedEntry
	 *    value[0, 1]
	 *         EXCLUDE_IF_SET ref
	 *    ref[0, 1]
	 *         EXCLUDE_IF_SET value
	 */
	protected void sequence_TagEntryDef_TagEntryDef(EObject context, TagEntryDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (name=ID? (Groups+=XGroupExpression | Views+=ToolView)*)
	 *
	 * Features:
	 *    name[0, 1]
	 *    Groups[0, *]
	 *    Views[0, *]
	 */
	protected void sequence_ToolBox_ToolBox(EObject context, ToolBox semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (name=QualifiedName text=STRING? children+=XToolItemExpression*)
	 *
	 * Features:
	 *    name[1, 1]
	 *    text[0, 1]
	 *    children[0, *]
	 */
	protected void sequence_ToolGroup_ToolGroup(EObject context, ToolGroup semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((name=QualifiedName | name=STRING) text=STRING? tooltip=STRING? element=[ElementDef|QualifiedName])
	 *
	 * Features:
	 *    name[0, 2]
	 *    text[0, 1]
	 *    tooltip[0, 1]
	 *    element[1, 1]
	 */
	protected void sequence_ToolItem_ToolItem(EObject context, ToolItem semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (paramId=ToolViewExpNameID value=XExpression)
	 *
	 * Features:
	 *    paramId[1, 1]
	 *    value[1, 1]
	 */
	protected void sequence_ToolViewParameter_Parameter(EObject context, Parameter semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         name=QualifiedName 
	 *         (parameters+=ToolViewParameter parameters+=ToolViewParameter*)? 
	 *         tools+=[ToolItem|QualifiedName] 
	 *         tools+=[ToolItem|QualifiedName]*
	 *     )
	 *
	 * Features:
	 *    name[1, 1]
	 *    parameters[0, *]
	 *    tools[1, *]
	 */
	protected void sequence_ToolView_ToolView(EObject context, ToolView semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((name=QualifiedName | name=STRING)? (clazz=QualifiedName | clazz=STRING | superElement=[ValidatorDef|QualifiedName]) tags+=TagDef*)
	 *
	 * Features:
	 *    name[0, 2]
	 *    clazz[0, 2]
	 *         EXCLUDE_IF_SET superElement
	 *    superElement[0, 1]
	 *         EXCLUDE_IF_SET clazz
	 *         EXCLUDE_IF_SET clazz
	 *    tags[0, *]
	 */
	protected void sequence_ValidatorDef_ValidatorDef(EObject context, ValidatorDef semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         (leftOperand=XAdditiveExpression_XBinaryOperation_1_0_0_0 feature=[JvmIdentifiableElement|OpAdd] rightOperand=XMultiplicativeExpression) | 
	 *         (leftOperand=XMultiplicativeExpression_XBinaryOperation_1_0_0_0 feature=[JvmIdentifiableElement|OpMulti] rightOperand=XUnaryOperation) | 
	 *         (leftOperand=XOtherOperatorExpression_XBinaryOperation_1_0_0_0 feature=[JvmIdentifiableElement|OpOther] rightOperand=XAdditiveExpression) | 
	 *         (leftOperand=XRelationalExpression_XBinaryOperation_1_1_0_0_0 feature=[JvmIdentifiableElement|OpCompare] rightOperand=XOtherOperatorExpression) | 
	 *         (leftOperand=XEqualityExpression_XBinaryOperation_1_0_0_0 feature=[JvmIdentifiableElement|OpEquality] rightOperand=XRelationalExpression) | 
	 *         (leftOperand=XAndExpression_XBinaryOperation_1_0_0_0 feature=[JvmIdentifiableElement|OpAnd] rightOperand=XEqualityExpression) | 
	 *         (leftOperand=XOrExpression_XBinaryOperation_1_0_0_0 feature=[JvmIdentifiableElement|OpOr] rightOperand=XAndExpression) | 
	 *         (leftOperand=XAssignment_XBinaryOperation_1_1_0_0_0 feature=[JvmIdentifiableElement|OpMultiAssign] rightOperand=XAssignment)
	 *     )
	 *
	 * Features:
	 *    feature[8, 8]
	 *    leftOperand[8, 8]
	 *    rightOperand[8, 8]
	 */
	protected void sequence_XAdditiveExpression_XBinaryOperation(EObject context, XBinaryOperation semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         (feature=[JvmIdentifiableElement|ValidID] value=XAssignment) | 
	 *         (assignable=XMemberFeatureCall_XAssignment_1_0_0_0_0 feature=[JvmIdentifiableElement|ValidID] value=XAssignment)
	 *     )
	 *
	 * Features:
	 *    feature[2, 2]
	 *    assignable[1, 1]
	 *         EXCLUDE_IF_UNSET feature
	 *         MANDATORY_IF_SET feature
	 *         EXCLUDE_IF_UNSET value
	 *         MANDATORY_IF_SET value
	 *         EXCLUDE_IF_SET feature
	 *         EXCLUDE_IF_SET value
	 *    value[2, 2]
	 */
	protected void sequence_XAssignment_XAssignment(EObject context, XAssignment semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (expressions+=XExpressionInsideBlock*)
	 *
	 * Features:
	 *    expressions[0, *]
	 */
	protected void sequence_XBlockExpression_XBlockExpression(EObject context, XBlockExpression semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (isTrue?='true'?)
	 *
	 * Features:
	 *    isTrue[0, 1]
	 */
	protected void sequence_XBooleanLiteral_XBooleanLiteral(EObject context, XBooleanLiteral semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (typeGuard=JvmTypeReference? case=XExpression? then=XExpression)
	 *
	 * Features:
	 *    case[0, 1]
	 *    then[1, 1]
	 *    typeGuard[0, 1]
	 */
	protected void sequence_XCasePart_XCasePart(EObject context, XCasePart semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (target=XCastedExpression_XCastedExpression_1_0_0_0 type=JvmTypeReference)
	 *
	 * Features:
	 *    type[1, 1]
	 *    target[1, 1]
	 */
	protected void sequence_XCastedExpression_XCastedExpression(EObject context, XCastedExpression semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (declaredParam=JvmFormalParameter expression=XExpression)
	 *
	 * Features:
	 *    expression[1, 1]
	 *    declaredParam[1, 1]
	 */
	protected void sequence_XCatchClause_XCatchClause(EObject context, XCatchClause semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((formalParameters+=JvmFormalParameter formalParameters+=JvmFormalParameter*)? expression=XExpression)
	 *
	 * Features:
	 *    formalParameters[0, *]
	 *    expression[1, 1]
	 */
	protected void sequence_XClosure_XClosure(EObject context, XClosure semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (reference=[ColorDef|QualifiedName] | (newInstance?='new' definition=ColorDef))
	 *
	 * Features:
	 *    reference[0, 1]
	 *         EXCLUDE_IF_SET newInstance
	 *         EXCLUDE_IF_SET definition
	 *    newInstance[1, 1]
	 *         EXCLUDE_IF_UNSET definition
	 *         MANDATORY_IF_SET definition
	 *         EXCLUDE_IF_SET reference
	 *    definition[1, 1]
	 *         EXCLUDE_IF_UNSET newInstance
	 *         MANDATORY_IF_SET newInstance
	 *         EXCLUDE_IF_SET reference
	 */
	protected void sequence_XColorExpression_XReferenceExpression(EObject context, XReferenceExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (reference=[ConnectionStyleDef|QualifiedName] | (newInstance?='new' definition=ConnectionStyleDef))
	 *
	 * Features:
	 *    reference[0, 1]
	 *         EXCLUDE_IF_SET newInstance
	 *         EXCLUDE_IF_SET definition
	 *    newInstance[1, 1]
	 *         EXCLUDE_IF_UNSET definition
	 *         MANDATORY_IF_SET definition
	 *         EXCLUDE_IF_SET reference
	 *    definition[1, 1]
	 *         EXCLUDE_IF_UNSET newInstance
	 *         MANDATORY_IF_SET newInstance
	 *         EXCLUDE_IF_SET reference
	 */
	protected void sequence_XConnectionStyleExpression_XReferenceExpression(EObject context, XReferenceExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         constructor=[JvmConstructor|QualifiedName] 
	 *         (typeArguments+=JvmArgumentTypeReference typeArguments+=JvmArgumentTypeReference*)? 
	 *         (arguments+=XShortClosure | (arguments+=XExpression arguments+=XExpression*))?
	 *     )
	 *
	 * Features:
	 *    constructor[1, 1]
	 *    arguments[1, *]
	 *    typeArguments[0, *]
	 */
	protected void sequence_XConstructorCall_XConstructorCall(EObject context, XConstructorCall semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (reference=[DecoratorDef|QualifiedName] | (newInstance?='new' definition=DecoratorDef))
	 *
	 * Features:
	 *    reference[0, 1]
	 *         EXCLUDE_IF_SET newInstance
	 *         EXCLUDE_IF_SET definition
	 *    newInstance[1, 1]
	 *         EXCLUDE_IF_UNSET definition
	 *         MANDATORY_IF_SET definition
	 *         EXCLUDE_IF_SET reference
	 *    definition[1, 1]
	 *         EXCLUDE_IF_UNSET newInstance
	 *         MANDATORY_IF_SET newInstance
	 *         EXCLUDE_IF_SET reference
	 */
	protected void sequence_XDecoratorExpression_XReferenceExpression(EObject context, XReferenceExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (body=XExpression predicate=XExpression)
	 *
	 * Features:
	 *    predicate[1, 1]
	 *    body[1, 1]
	 */
	protected void sequence_XDoWhileExpression_XDoWhileExpression(EObject context, XDoWhileExpression semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     {XNullLiteral}
	 *
	 * Features:
	 */
	protected void sequence_XExpression_XNullLiteral(EObject context, XNullLiteral semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         declaringType=[JvmDeclaredType|StaticQualifier]? 
	 *         (typeArguments+=JvmArgumentTypeReference typeArguments+=JvmArgumentTypeReference*)? 
	 *         feature=[JvmIdentifiableElement|IdOrSuper] 
	 *         (explicitOperationCall?='(' (featureCallArguments+=XShortClosure | (featureCallArguments+=XExpression featureCallArguments+=XExpression*))?)?
	 *     )
	 *
	 * Features:
	 *    feature[1, 1]
	 *    typeArguments[0, *]
	 *    featureCallArguments[1, *]
	 *         EXCLUDE_IF_UNSET explicitOperationCall
	 *    explicitOperationCall[0, 1]
	 *         MANDATORY_IF_SET featureCallArguments
	 *         EXCLUDE_IF_UNSET featureCallArguments
	 *         MANDATORY_IF_SET featureCallArguments
	 *         MANDATORY_IF_SET featureCallArguments
	 *    declaringType[0, 1]
	 */
	protected void sequence_XFeatureCall_XFeatureCall(EObject context, XFeatureCall semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (reference=[FigureDef|QualifiedName] | (newInstance?='new' definition=FigureDef))
	 *
	 * Features:
	 *    reference[0, 1]
	 *         EXCLUDE_IF_SET newInstance
	 *         EXCLUDE_IF_SET definition
	 *    newInstance[1, 1]
	 *         EXCLUDE_IF_UNSET definition
	 *         MANDATORY_IF_SET definition
	 *         EXCLUDE_IF_SET reference
	 *    definition[1, 1]
	 *         EXCLUDE_IF_UNSET newInstance
	 *         MANDATORY_IF_SET newInstance
	 *         EXCLUDE_IF_SET reference
	 */
	protected void sequence_XFigureExpression_XReferenceExpression(EObject context, XReferenceExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (declaredParam=JvmFormalParameter forExpression=XExpression eachExpression=XExpression)
	 *
	 * Features:
	 *    forExpression[1, 1]
	 *    eachExpression[1, 1]
	 *    declaredParam[1, 1]
	 */
	protected void sequence_XForLoopExpression_XForLoopExpression(EObject context, XForLoopExpression semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((paramTypes+=JvmTypeReference paramTypes+=JvmTypeReference*)? returnType=JvmTypeReference)
	 *
	 * Features:
	 *    paramTypes[0, *]
	 *    returnType[1, 1]
	 */
	protected void sequence_XFunctionTypeRef_XFunctionTypeRef(EObject context, XFunctionTypeRef semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (reference=[ToolGroup|QualifiedName] | (newInstance?='new' definition=ToolGroup))
	 *
	 * Features:
	 *    reference[0, 1]
	 *         EXCLUDE_IF_SET newInstance
	 *         EXCLUDE_IF_SET definition
	 *    newInstance[1, 1]
	 *         EXCLUDE_IF_UNSET definition
	 *         MANDATORY_IF_SET definition
	 *         EXCLUDE_IF_SET reference
	 *    definition[1, 1]
	 *         EXCLUDE_IF_UNSET newInstance
	 *         MANDATORY_IF_SET newInstance
	 *         EXCLUDE_IF_SET reference
	 */
	protected void sequence_XGroupExpression_XReferenceExpression(EObject context, XReferenceExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (if=XExpression then=XExpression else=XExpression?)
	 *
	 * Features:
	 *    if[1, 1]
	 *    then[1, 1]
	 *    else[0, 1]
	 */
	protected void sequence_XIfExpression_XIfExpression(EObject context, XIfExpression semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     value=INT
	 *
	 * Features:
	 *    value[1, 1]
	 */
	protected void sequence_XIntLiteral_XIntLiteral(EObject context, XIntLiteral semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (reference=[DecoratorLocatorDef|QualifiedName] | (newInstance?='new' definition=DecoratorLocatorDef))
	 *
	 * Features:
	 *    reference[0, 1]
	 *         EXCLUDE_IF_SET newInstance
	 *         EXCLUDE_IF_SET definition
	 *    newInstance[1, 1]
	 *         EXCLUDE_IF_UNSET definition
	 *         MANDATORY_IF_SET definition
	 *         EXCLUDE_IF_SET reference
	 *    definition[1, 1]
	 *         EXCLUDE_IF_UNSET newInstance
	 *         MANDATORY_IF_SET newInstance
	 *         EXCLUDE_IF_SET reference
	 */
	protected void sequence_XLocatorExpression_XReferenceExpression(EObject context, XReferenceExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (
	 *         memberCallTarget=XMemberFeatureCall_XMemberFeatureCall_1_1_0_0_0 
	 *         (nullSafe?='?.' | spreading?='*.')? 
	 *         (typeArguments+=JvmArgumentTypeReference typeArguments+=JvmArgumentTypeReference*)? 
	 *         feature=[JvmIdentifiableElement|ValidID] 
	 *         (explicitOperationCall?='(' (memberCallArguments+=XShortClosure | (memberCallArguments+=XExpression memberCallArguments+=XExpression*))?)?
	 *     )
	 *
	 * Features:
	 *    feature[1, 1]
	 *    typeArguments[0, *]
	 *    memberCallTarget[1, 1]
	 *    memberCallArguments[1, *]
	 *         EXCLUDE_IF_UNSET explicitOperationCall
	 *    explicitOperationCall[0, 1]
	 *         MANDATORY_IF_SET memberCallArguments
	 *         EXCLUDE_IF_UNSET memberCallArguments
	 *         MANDATORY_IF_SET memberCallArguments
	 *         MANDATORY_IF_SET memberCallArguments
	 *    spreading[0, 1]
	 *         EXCLUDE_IF_SET nullSafe
	 *    nullSafe[0, 1]
	 *         EXCLUDE_IF_SET spreading
	 */
	protected void sequence_XMemberFeatureCall_XMemberFeatureCall(EObject context, XMemberFeatureCall semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (reference=[PolicyDef|QualifiedName] | (newInstance?='new' definition=PolicyDef))
	 *
	 * Features:
	 *    reference[0, 1]
	 *         EXCLUDE_IF_SET newInstance
	 *         EXCLUDE_IF_SET definition
	 *    newInstance[1, 1]
	 *         EXCLUDE_IF_UNSET definition
	 *         MANDATORY_IF_SET definition
	 *         EXCLUDE_IF_SET reference
	 *    definition[1, 1]
	 *         EXCLUDE_IF_UNSET newInstance
	 *         MANDATORY_IF_SET newInstance
	 *         EXCLUDE_IF_SET reference
	 */
	protected void sequence_XPolicyExpression_XReferenceExpression(EObject context, XReferenceExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (x=XExpression y=XExpression (w=XExpression h=XExpression)?)
	 *
	 * Features:
	 *    x[1, 1]
	 *    y[1, 1]
	 *    w[0, 1]
	 *         EXCLUDE_IF_UNSET h
	 *         MANDATORY_IF_SET h
	 *    h[0, 1]
	 *         EXCLUDE_IF_UNSET w
	 *         MANDATORY_IF_SET w
	 */
	protected void sequence_XRectangle_XRectangle(EObject context, XRectangle semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (reference=[ModuleItem|QualifiedName] | (newInstance?='new' (definition=ColorDef | definition=DecoratorLocatorDef)))
	 *
	 * Features:
	 *    reference[0, 1]
	 *         EXCLUDE_IF_SET newInstance
	 *         EXCLUDE_IF_SET definition
	 *         EXCLUDE_IF_SET definition
	 *    newInstance[1, 1]
	 *         MANDATORY_IF_SET definition
	 *         MANDATORY_IF_SET definition
	 *         EXCLUDE_IF_SET reference
	 *    definition[0, 2]
	 *         EXCLUDE_IF_UNSET newInstance
	 *         EXCLUDE_IF_SET reference
	 */
	protected void sequence_XReferenceExpression_XReferenceExpression(EObject context, XReferenceExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (expression=XRelationalExpression_XInstanceOfExpression_1_0_0_0_0 type=[JvmType|QualifiedName])
	 *
	 * Features:
	 *    type[1, 1]
	 *    expression[1, 1]
	 */
	protected void sequence_XRelationalExpression_XInstanceOfExpression(EObject context, XInstanceOfExpression semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (expression=XExpression?)
	 *
	 * Features:
	 *    expression[0, 1]
	 */
	protected void sequence_XReturnExpression_XReturnExpression(EObject context, XReturnExpression semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     ((formalParameters+=JvmFormalParameter formalParameters+=JvmFormalParameter*)? expression=XExpression)
	 *
	 * Features:
	 *    formalParameters[0, *]
	 *    expression[1, 1]
	 */
	protected void sequence_XShortClosure_XClosure(EObject context, XClosure semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     value=STRING
	 *
	 * Features:
	 *    value[1, 1]
	 */
	protected void sequence_XStringLiteral_XStringLiteral(EObject context, XStringLiteral semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (localVarName=ValidID? switch=XExpression cases+=XCasePart+ default=XExpression?)
	 *
	 * Features:
	 *    switch[1, 1]
	 *    cases[1, *]
	 *    default[0, 1]
	 *    localVarName[0, 1]
	 */
	protected void sequence_XSwitchExpression_XSwitchExpression(EObject context, XSwitchExpression semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     expression=XExpression
	 *
	 * Features:
	 *    expression[1, 1]
	 */
	protected void sequence_XThrowExpression_XThrowExpression(EObject context, XThrowExpression semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (reference=[ToolItem|QualifiedName] | (newInstance?='new' definition=ToolItem))
	 *
	 * Features:
	 *    reference[0, 1]
	 *         EXCLUDE_IF_SET newInstance
	 *         EXCLUDE_IF_SET definition
	 *    newInstance[1, 1]
	 *         EXCLUDE_IF_UNSET definition
	 *         MANDATORY_IF_SET definition
	 *         EXCLUDE_IF_SET reference
	 *    definition[1, 1]
	 *         EXCLUDE_IF_UNSET newInstance
	 *         MANDATORY_IF_SET newInstance
	 *         EXCLUDE_IF_SET reference
	 */
	protected void sequence_XToolItemExpression_XReferenceExpression(EObject context, XReferenceExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (expression=XExpression ((catchClauses+=XCatchClause+ finallyExpression=XExpression?) | finallyExpression=XExpression))
	 *
	 * Features:
	 *    expression[1, 1]
	 *    finallyExpression[0, 2]
	 *    catchClauses[1, *]
	 *         MANDATORY_IF_SET finallyExpression
	 *         EXCLUDE_IF_SET finallyExpression
	 */
	protected void sequence_XTryCatchFinallyExpression_XTryCatchFinallyExpression(EObject context, XTryCatchFinallyExpression semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     type=[JvmType|QualifiedName]
	 *
	 * Features:
	 *    type[1, 1]
	 */
	protected void sequence_XTypeLiteral_XTypeLiteral(EObject context, XTypeLiteral semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (feature=[JvmIdentifiableElement|OpUnary] operand=XCastedExpression)
	 *
	 * Features:
	 *    feature[1, 1]
	 *    operand[1, 1]
	 */
	protected void sequence_XUnaryOperation_XUnaryOperation(EObject context, XUnaryOperation semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (reference=[ValidatorDef|QualifiedName] | (newInstance?='new' definition=ValidatorDef))
	 *
	 * Features:
	 *    reference[0, 1]
	 *         EXCLUDE_IF_SET newInstance
	 *         EXCLUDE_IF_SET definition
	 *    newInstance[1, 1]
	 *         EXCLUDE_IF_UNSET definition
	 *         MANDATORY_IF_SET definition
	 *         EXCLUDE_IF_SET reference
	 *    definition[1, 1]
	 *         EXCLUDE_IF_UNSET newInstance
	 *         MANDATORY_IF_SET newInstance
	 *         EXCLUDE_IF_SET reference
	 */
	protected void sequence_XValidatorExpression_XReferenceExpression(EObject context, XReferenceExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (writeable?='var'? ((type=JvmTypeReference name=ValidID) | name=ValidID) right=XExpression?)
	 *
	 * Features:
	 *    type[1, 1]
	 *         EXCLUDE_IF_UNSET name
	 *         MANDATORY_IF_SET name
	 *         EXCLUDE_IF_SET name
	 *    name[1, 2]
	 *    right[0, 1]
	 *    writeable[0, 1]
	 */
	protected void sequence_XVariableDeclaration_XVariableDeclaration(EObject context, XVariableDeclaration semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (reference=[ViewDef|QualifiedName] | (newInstance?='new' definition=ViewDef))
	 *
	 * Features:
	 *    reference[0, 1]
	 *         EXCLUDE_IF_SET newInstance
	 *         EXCLUDE_IF_SET definition
	 *    newInstance[1, 1]
	 *         EXCLUDE_IF_UNSET definition
	 *         MANDATORY_IF_SET definition
	 *         EXCLUDE_IF_SET reference
	 *    definition[1, 1]
	 *         EXCLUDE_IF_UNSET newInstance
	 *         MANDATORY_IF_SET newInstance
	 *         EXCLUDE_IF_SET reference
	 */
	protected void sequence_XViewExpression_XReferenceExpression(EObject context, XReferenceExpression semanticObject) {
		genericSequencer.createSequence(context, semanticObject);
	}
	
	
	/**
	 * Constraint:
	 *     (predicate=XExpression body=XExpression)
	 *
	 * Features:
	 *    predicate[1, 1]
	 *    body[1, 1]
	 */
	protected void sequence_XWhileExpression_XWhileExpression(EObject context, XWhileExpression semanticObject) {
		superSequencer.createSequence(context, semanticObject);
	}
}
